Security News
The Push to Ban Ransom Payments Is Gaining Momentum
Ransomware costs victims an estimated $30 billion per year and has gotten so out of control that global support for banning payments is gaining momentum.
totalist
Advanced tools
Package description
The totalist npm package is a simple, fast utility to recursively list all files in a directory, or totalist. It is designed to be minimalistic and efficient, making it suitable for various applications where you need to process or handle files within a directory structure.
Recursively list all files
This feature allows you to recursively list all files in a specified directory. The callback function receives the name of each file, its absolute path, and its stats object, which includes properties like file size.
const { totalist } = require('totalist');
async function listFiles(dir) {
await totalist(dir, (name, abs, stats) => {
console.log(name, abs, stats.size);
});
}
listFiles('./path/to/directory');
The 'glob' package provides functionality to match files using the patterns the shell uses, like stars and stuff. It's more feature-rich than totalist, offering pattern matching and filtering capabilities, but it might be slower for simply listing all files due to the overhead of pattern matching.
Readdirp is another package that offers recursive directory reading with a stream API, making it suitable for handling large directories. It provides more options for filtering and handling entries than totalist, but it might be more complex to use for basic file listing tasks.
Readme
A tiny (195B to 224B) utility to recursively list all (total) files in a directory
Traverse a directory recursively, running a function for every file found.
With this module, you easily apply custom logic to decide which file(s) to process without worrying about accidentally accessing a directory or making repeat fs.Stats
requests.
$ npm install --save totalist
There are two "versions" of totalist
available:
Node.js: >= 8.x
Size (gzip): 220 bytes
Availability: CommonJS, ES Module
This is the primary/default mode. It makes use of async
/await
and util.promisify
.
Node.js: >= 6.x
Size (gzip): 195 bytes
Availability: CommonJS, ES Module
This is the opt-in mode, ideal for scenarios where async
usage cannot be supported.
Selecting a Mode
// import via npm module
import { totalist } from 'totalist';
import { totalist } from 'totalist/sync';
Example Usage
import { totalist } from 'totalist/sync';
const styles = new Set();
const scripts = new Set();
totalist('src', (name, abs, stats) => {
if (/\.js$/.test(name)) {
scripts.add(abs);
if (stats.size >= 100e3) {
console.warn(`[WARN] "${name}" might cause performance issues (${stats.size})`);
}
} else if (/\.css$/.test(name)) {
styles.add(abs);
}
});
console.log([...scripts]);
//=> [..., '/Users/lukeed/.../src/path/to/example.css', ...]
Returns: void
Important: The "async" usage must be
await
ed or included within a Promise chain.
Type: string
Required: true
The directory to traverse.
This may be a relative or an absolute path.
Note: Node.js will assume a relative path is meant to be resolved from the current location (
process.cwd()
).
Type: Function
Required: true
The callback function to run for every file.
The function receives three parameters:
Type: String
The path relative to the initial dir
value you provided.
Type: String
The absolute path of the file.
Type: fs.Stats
The fs.Stats
object for the file.
MIT © Luke Edwards
FAQs
A tiny (195B to 220B) utility to recursively list all (total) files in a directory
We found that totalist demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Ransomware costs victims an estimated $30 billion per year and has gotten so out of control that global support for banning payments is gaining momentum.
Application Security
New SEC disclosure rules aim to enforce timely cyber incident reporting, but fear of job loss and inadequate resources lead to significant underreporting.
Security News
The Python Software Foundation has secured a 5-year sponsorship from Fastly that supports PSF's activities and events, most notably the security and reliability of the Python Package Index (PyPI).